package de.westranger.forex.trading.genetic.allel;

import java.io.Serializable;

public interface Node extends Cloneable,Serializable{
	
	/**
	 * this method will return the root node
	 * @return root node
	 */
	public Node getRoot();
	
	/**
	 * this method will return the right child-node if the class which
	 * implements this interface in an operator
	 * 
	 * @return right child-node
	 */
	public Node getRightChild();

	/**
	 * this method will return the left child-node if the class which implements
	 * this interface in an operator
	 * 
	 * @return left child-node
	 */
	public Node getLeftChild();
	/**
	 * this method will return the right child-node if the class which
	 * implements this interface in an operator
	 * 
	 * @return right child-node
	 */
	public void setRightChild(Node rightChild);

	/**
	 * this method will return the left child-node if the class which implements
	 * this interface in an operator
	 * 
	 * @return left child-node
	 */
	public void setLeftChild(Node leftChild);
	/**
	 * this method will return the the enumeration value which represents the
	 * operator / terminal type
	 * 
	 * @return enumeration value
	 */
	public int getValue();
	
	public void setRoot(Node root);
	
	public Node clone();
}
